/*
  皇家马德里
  题目描述
    现有 A 和 B 两个国家, 每个国家有 n 支球队, A 国家第 i 支球队的战力值为 ai，
    B 国家第 i 支球队的战力值为 bi。

    今年两个国家的表演赛又开始啦，共进行 n ∗ n 场比赛，
    第 i 天举办 n 场比赛，由 A 国的第 i 支球队，挑战 B 国的 n 支球队，保证参加比赛的队伍只能相遇一次。
    每场比赛，战力值高的球队获得胜利同时累得 1 分，平局与失败的一队不得分，
    请问 n ∗ n 场比赛结束后， B 国累计的积分是多少？
  输入
    第一行一个整数 n ，代表球队数量 n < =1e5
    第二行 n 个整数 ai, 代表 A 国家第 i 支球队的战力值
    第三行 n 个整数 bi, 代表 B 国家第 i 支球队的战力值
  输出
    输出一行一个整数，代表 B 国的积分
  样例输入
    4
    1 5 2 4
    4 7 5 3
  样例输出
    11
*/

#include <bits/stdc++.h>

using namespace std;

int a[100005] = {}; // a[i] (1 <= i <= n) 代表 A 国家第 i 支球队的战力值
int b[100005] = {}; // b[i] (1 <= i <= n) 代表 B 国家第 i 支球队的战力值

int main() {
    int n;

    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    for (int i = 1; i <= n; i++) {
        cin >> b[i];
    }

    // 对 b[1] ~ b[n] 按从小到大的顺序进行排序
    sort(b + 1, b + n + 1);

    // 计算 B 过的积分
    // 计算方法：
    //   针对 a[1] ~ a[n] 中的每一个值 a[i], 统计 b[1] ~ b[n] 中大于 a[i] 的元素个数
    long long num = 0;
    for (int i = 1; i <= n; i++) {
        int f = upper_bound(b + 1, b + n + 1, a[i]) - b; // 计算 b[1] ~ b[n] 中第一个大于 a[i] 的下标位置
        num = num + n - f + 1; // 说明: n - f + 1 的值为 b[1] ~ b[n] 中大于 a[i] 的元素个数
    }
    cout << num;

    return 0;
}